package com.wangyh.edit.prettyedit.login;

import com.wangyh.edit.prettyedit.constant.EditConstant;
import com.wangyh.edit.prettyedit.util.PreferencesUtils;
import com.wangyh.edit.prettyedit.util.SecuretUtil;
import com.wangyh.edit.prettyedit.mainframe.MainFrameView;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.CheckBox;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * 登录界面对应的controler
 * @author wangyh1
 */
public class LoginController {

    @FXML
    private Text actiontarget;

    @FXML
    private TextField userText;

    @FXML
    private PasswordField pwdText;

    @FXML
    private CheckBox remPwd;

    @FXML
    private CheckBox remAuto;

    @FXML
    protected void onLoginButtonClick() {
        String user = userText.getText();
        if(user==null || user.trim().length()==0){
            actiontarget.setText("账号不能为空！");
            return;
        }

        String pwd = pwdText.getText();
        if(pwd==null || pwd.trim().length()==0){
            actiontarget.setText("密码不能为空！");
            return;
        }

        //获取登录人的密码
        String pwdPref = PreferencesUtils.getPreferences(EditConstant.storeUser,user,"");
        //密码为空，则账号不存在
        if("".equals(pwdPref)){
            actiontarget.setText("账号不存在，请先注册！");
            return;
        }
        String secPwd = SecuretUtil.enCodeMd5(pwd);
        if(!secPwd.equals(pwdPref)){
            actiontarget.setText("密码错误，请更换密码重试！");
            return;
        }else{
            PreferencesUtils.setPreferences(EditConstant.storeUser,user,secPwd);
        }

        //账号密码对了，可以设置配置了
        boolean remPwdCheck = remPwd.isSelected();
        boolean remAutoCheck = remAuto.isSelected();
        //记住账号密码
        if(remPwdCheck){
            //记住账号
            PreferencesUtils.setPreferences(EditConstant.storeConfig,EditConstant.configRemb,"1");
            //保存登录人的密码
            PreferencesUtils.setPreferences(EditConstant.storeConfig,EditConstant.configUser,user);
            PreferencesUtils.setPreferences(EditConstant.storeConfig,EditConstant.configPwd,pwd);
        }else {
            //不要记住账号
            PreferencesUtils.setPreferences(EditConstant.storeConfig,EditConstant.configRemb,"0");
            //删除之前的记录
            PreferencesUtils.remPreferences(EditConstant.storeConfig,"user");
            PreferencesUtils.remPreferences(EditConstant.storeConfig,"pwd");
        }

        //自动登录
        if(remAutoCheck){
            PreferencesUtils.setPreferences(EditConstant.storeConfig,"auto","1");
        }else {
            //删除之前的记录
            PreferencesUtils.remPreferences(EditConstant.storeConfig,"auto");
        }

        //登录成功后的会话信息，保存的是用户名
        EditConstant.sessionUser = user;

        //打开主界面
        MainFrameView mainFrame = new MainFrameView();
        EditConstant.mainFrameView = mainFrame;
        mainFrame.showView();

//            Timeline animation = new Timeline();
//            animation.setCycleCount(Timeline.INDEFINITE);
//            animation.getKeyFrames().add(mainFrame);
//            animation.play();

        //这里是取到Stage的具体代码
        Stage stage = (Stage) actiontarget.getScene().getWindow();
        stage.close();
    }

    @FXML
    protected void onRegistButtonClick() {
        String user = userText.getText();
        if(user==null || user.trim().length()==0){
            actiontarget.setText("账号不能为空！");
            return;
        }

        String pwd = pwdText.getText();
        if(pwd==null || pwd.trim().length()==0){
            actiontarget.setText("密码不能为空！");
            return;
        }

        //获取登录人的密码
        String pwdPref = PreferencesUtils.getPreferences(EditConstant.storeUser,user,"");
        //密码为空，则账号不存在
        if(!"".equals(pwdPref)){
            actiontarget.setText("账号已存在，不允许重复注册！请直接登录");
            return;
        }

        //保存登录人的密码，加密后的。
        String secPwd = SecuretUtil.enCodeMd5(pwd);
        PreferencesUtils.setPreferences(EditConstant.storeUser, user, secPwd);
        //密码为空，则账号不存在
        actiontarget.setText("账号:\"" + user + "\"注册成功！请切记密码：\"" + pwd + "\" ！！！");

        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setContentText("账号:\"" + user + "\"注册成功！\n请切记密码：\"" + pwd + "\" ！！！ \n忘记密码将无法登录！");
        alert.setTitle("注册成功！");
        alert.setHeaderText("注册成功！");
        alert.show();
    }

    /**
     * 自动登录按钮点击时间
     */
    @FXML
    protected void onRembButtonClick() {
        //如果自动登录，则记住密码也要被选中
        if(!remPwd.isSelected()){
            remAuto.setSelected(false);
        }
    }

    /**
     * 自动登录按钮点击时间
     */
    @FXML
    protected void onAutoButtonClick() {
        //如果自动登录，则记住密码也要被选中
        if(remAuto.isSelected()){
            remPwd.setSelected(true);
        }
    }

}